package com.fortune.dao;

import com.fortune.constants.enums.MStore;
import com.fortune.dto.in.distributorMgt.DAccountAddDto;
import com.fortune.dto.in.distributorMgt.DAccountEditDto;
import com.fortune.dto.in.distributorMgt.DAccountListDto;
import com.fortune.dto.in.distributorMgt.UserUpAndDownDto;
import com.fortune.dto.in.producePriceManagement.PriceDealerListDto;
import com.fortune.vo.distributorMgt.Distributor;
import com.fortune.vo.mStoreOut.MStoreOutInfoDetailIn;
import com.fortune.vo.mStoreOut.ProduceDetailIn;
import com.fortune.vo.producePriceManagement.PriceManagementDealer;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface DAccountInfoDao {
    /**
     * 查询经销商列表
     * @param dAccountListDto
     * @return
     */
    List<Distributor> queryAccountList(DAccountListDto dAccountListDto);

    /**
     * 查询经销商列表个数
     * @param dAccountListDto
     * @return
     */
    int queryAccountListCount(DAccountListDto dAccountListDto);

    /**
     * 检测经销商是否存在
     * @param dAccountAddDto
     * @return
     */
    int queryAccountIsExist(DAccountAddDto dAccountAddDto);

    /**
     * 检测经销商是否存在
     * @param phone
     * @return
     */
    int queryAccountByNumber(String phone);

    /**
     * 添加经销商新账户
     * @param id
     * @param dAccountAddDto
     * @return
     */
    int addAccount(@Param("id") String id,@Param("dAccountAddDto") DAccountAddDto dAccountAddDto);

    /**
     * 通过经销商id查找经销商是否存在
     * @param id
     * @return
     */
    int queryAccountById(@Param("id") String id);

    /**
     * 删除经销商
     * @param id
     * @return
     */
    int deleteAccount(String id);

    /**
     * 查找手机号
     * @param id
     * @return
     */
    String queryAccountPhoneById(String id);

    /**
     *编辑经销商账户
     * @return
     */
    int editAccount(DAccountEditDto dAccountEditDto);

    /**
     * 查找经销商详细信息
     * @param id
     * @return
     */
    Distributor queryAccountInfoById(String id);

    /**
     * 禁用或启用经销商
     * @param userUpAndDownDto
     * @return
     */
    int upAndDownUser(UserUpAndDownDto userUpAndDownDto);

    /**
     *查询经销商列表
     * @param companyId
     * @return
     */
    List<PriceManagementDealer> queryAccounPricetList(@Param("companyId") String companyId,@Param("priceDealerListDto") PriceDealerListDto priceDealerListDto);

    /**
     * 添加经销商入库
     * @param inId
     * @param detail
     * @return
     */
    int addStoreOutAccount(@Param("inId") String inId, @Param("detail") MStoreOutInfoDetailIn detail, @Param("mStore") MStore mStore,@Param("endNum") String endNum);

    /**
     * 添加经销商入库详情
     * @param inId
     * @param companyId
     * @param dealerId
     * @param list
     * @return
     */
    int addStoreOutAccountInfo(@Param("inId") String inId,@Param("companyId") String companyId, @Param("dealerId") String  dealerId, @Param("list") List<ProduceDetailIn> list);

    /**
     * 经销商名称、简称、编号在该厂商范围内查重
     * @param dAccountEditDto
     * @return
     */
    int queryEditAccountIsExist(DAccountEditDto dAccountEditDto);

    /**
     * 手机号码需要全系统查重
     * @param dAccountEditDto
     * @return
     */
    int queryEditAccountByPhone(DAccountEditDto dAccountEditDto);

    /**
     * 查询经销商入库单编号
     * @param dealerId
     * @return
     */
    Integer queryDInBaseInfoNo(String dealerId);

    int queryAccountIsExistByNumber(String number);

    int queryAccountIsExistByAbbreviation(String abbreviation);

    int queryAccountIsExistByName(String name);

    int queryEditAccountIsExistNumber(@Param("id") String id, @Param("number") String number);

    int queryEditAccountIsExistByAbbreviation(@Param("id") String id, @Param("abbreviation") String abbreviation);

    int queryEditAccountIsExistByName(@Param("id") String id, @Param("name") String name);
}
